package com.aro.controler;
import java.util.Collections;
import java.util.Map;
import com.aro.model.IActualizable;
import com.aro.model.Persona;
import com.aro.utils.MenorDeEdadException;
import com.aro.utils.ParameterTool;
import com.aro.view.FrmPersona;
import com.aro.view.IDatable;

public class CtrlPersona implements IControlable{
	//Esto puede ser replazado por una enum
	public static final String NAME = "NAME";
	public static final String SURNAME = "SURNAME";
	public static final String AGE = "AGE";
	private IDatable myView;
	private IActualizable myModel;

	//se puede hacer aca o crear un constructor
	{
		myView = new FrmPersona(this);
		myModel = new Persona(this);
	}
	@Override
	public void oKAction() {
		Map<String,String> data = myView.getData();
		try{
			ParameterTool.checkMandatoryFields(data);
			ParameterTool.checkInteger(AGE, data.get(AGE));
			myModel.save(data);
		}catch(MenorDeEdadException e){
			setReturningMessage(e.getMessage());
		}catch(IllegalArgumentException e){
			setReturningMessage(e.getLocalizedMessage());
		}
	}
	
	@Override
	public void cacelAction() {
		myView.close();
		System.exit(0);
	}
	@Override
	public void setReturningMessage(String msj) {
		myView.showMessage(msj);
	}
	public void showFrame(){
		myView.showMe();
	}
}
